package com.example.laixunlong.control;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.ActivityResultRegistry;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import com.example.laixunlong.MainActivity;
import com.example.laixunlong.R;

import java.util.Objects;

/*在Android中,所有页面都是Activity,只要一个类继承了AppCompatActivity,那就是一个合格实例*/
/*注意,在实例书写完成后,要到"AndroidMainfest"注册主文件中注册实例*/
public class Activity_lifecycle extends AppCompatActivity
{
    private Button btn1;
    private Button btn2;
    private EditText input1;
    private TextView text1;

    /*重写父类的onCreate方法,因为后台要反射调用这个方法*/
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        /*xml文件中有对应的启动模式,详细请跳转到xml文件中*/
        super.onCreate(savedInstanceState);
        //写下关联的xml文件名,通过R.layout.获取
            /*setContentView的意思就是当前显示内容的修改，只要修改显示页面，就能实现跳转的效果*/
        setContentView(R.layout.activity_lifecycle);
        btn1=findViewById(R.id.button_finish);
        btn2=findViewById(R.id.put_button_1);
        input1=findViewById(R.id.top_activity_input);
        text1=findViewById(R.id.activity_text_1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("通过finish返回","触发成功");
                finish();
            }
        });

//页面传值:其实是会话存储的应用
        /*上一个页面传递的数据全部存储在静态集合Bundle中,通过json格式存储*/
        Bundle bundle=getIntent().getExtras();
        String txt1 = "";
        //txt1=bundle.getString("txt1");//在主页面跳转过来时在打开
        text1.setText(text1.getText()+txt1);//更新到页面中


        /*向上一个页面传递数据,其实是全局静态数据的创建与修改*/
        /*创建按钮事件,发送数据并返回*/
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //和传递到下个页面的方法不同,此处意图不需要源和对象,也不需要putExtras()方法,只需将意图放入setResult()中即可,(广播式发送方法)
                Intent intent=new Intent();
                Bundle bundle1=new Bundle();
                Log.e("此时回传数据为",input1.getText().toString());
                bundle1.putString("txt2",input1.getText().toString());
                intent.putExtras(bundle1);
                setResult(Activity.RESULT_OK,intent);
                //不是跳转,而是销毁当前页
                finish();
            }
        });
    }
    //
/*页面生命周期,上面的onCreate也是生命周期的一部分
*   onCreate    页面开始加载*/
    @Override   /*页面加载成功*/
    protected void onStart()
    {
        super.onStart();
        Log.e("触发周期:","页面加载成功");
    }
    @Override   /*页面展示*/
    protected void onResume() {
        super.onResume();
        Log.e("触发周期:","页面展示");
    }
    @Override   /*页面停止活动*/
    protected void onPause() {
        super.onPause();
        Log.e("触发周期:","页面停止活动");
    }
    @Override   /*页面撤离,不可见*/
    protected void onStop() {
        super.onStop();
        Log.e("触发周期:","页面撤离");
    }
    @Override   /*页面重载,此方法仅当跳转的页面存在时才执行,并依次从创建页面开始执行*/
    protected void onRestart()
    {
        super.onRestart();
        Log.e("触发周期:","页面重新载入");
    }
    @Override   /*页面完全销毁,此方法仅当跳转的页面不存在时执行,会跳转到桌面*/
    protected void onDestroy() {
        super.onDestroy();
        Log.e("触发周期:","页面销毁");
    }
}
